package com.ym.medical.service;

import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.ym.common.enums.UserUserTypeEnum;
import com.ym.core.utils.tkmybatis.IBaseSV;
import com.ym.medical.domain.entity.WxUserEntity;
import com.ym.medical.domain.param.WxUserQueryParam;
import com.ym.medical.domain.vo.WxUserListPcVO;
import com.ym.medical.enums.PlaformSourceEnum;
import me.chanjar.weixin.mp.bean.result.WxMpUser;

import java.util.List;

/**
 * 微信用户Service接口
 *
 * @author ym
 * @date 2020-08-17
 */
public interface IWxUserSV extends IBaseSV<WxUserEntity> {

	/**
	 * 查询微信用户列表
	 *
	 * @param queryParam 微信用户 查询对象
	 * @return 微信用户集合
	 */
	List<WxUserListPcVO> selectListPC(WxUserQueryParam queryParam);

	
	/**
	 * 创建微信用户
	 *
	 * @param userId
	 * @param userTypeEnum
	 * @param wxMaUserInfo
	 * @return
	 */
	WxUserEntity createWxUserMa(Long userId, UserUserTypeEnum userTypeEnum, WxMaUserInfo wxMaUserInfo);

	/**
	 * 创建微信用户
	 *
	 * @param wxMpUser 微信用户
	 */
	WxUserEntity createWxUserMp(Long userId, UserUserTypeEnum userTypeEnum, WxMpUser wxMpUser);


	/**
	 * 获取微信用户的openid
	 *
	 * @param toUser
	 * @param plaformSourceEnum 平台来源
	 * @return
	 */
	String getOpenId(Long toUser, PlaformSourceEnum plaformSourceEnum);

	/**
	 * 根据用户ID查找微信用户
	 *
	 * @param userId
	 * @return
	 */
	WxUserEntity selectByUserId(Long userId);

	/**
	 * 同步授权微信数据到微信表
	 *
	 * @param id
	 * @param userInfo
	 */
	WxUserEntity synchronizeWeChatDataMa(Long id, WxMaUserInfo userInfo);
}
